package com.bjfu.gmms.servlet;

import com.bjfu.gmms.MyBatisUtil;
import com.bjfu.gmms.mapper.UserMapper;
import com.bjfu.gmms.model.User;
import org.apache.ibatis.session.SqlSession;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    private UserMapper userMapper;

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        // 获取数据库连接并验证用户名和密码
        SqlSession sqlSession = MyBatisUtil.getSqlSession("development");
        userMapper = sqlSession.getMapper(UserMapper.class);

        User user = userMapper.getUserByUsername(username);

        if (user == null) {
            // 用户名不存在
            request.setAttribute("errorMessage", "用户名不存在");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        } else if (!user.getPassword().equals(password)) {
            // 密码错误
            request.setAttribute("errorMessage", "密码错误");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        } else {
            // 登录成功，根据身份跳转到不同页面 将登陆用户信息存储到session
            HttpSession session = request.getSession();
            session.setAttribute("user", user);

            int userId = user.getId();

            if (userId == 1) {
                // 学生 查看招生目录 查看导师信息 信息提交 志愿填报 结果查询
                response.sendRedirect("studentDashboard.jsp");
            } else if (userId == 2) {
                // 导师               账号修改 维护个人简介信息 选择确认学生 查看整体选择结果
                response.sendRedirect("mentorDashboardServlet");
            } else if (userId == 3) {
                // 学科秘书             推动导师志愿选择过程（个人理解：将志愿开放时间的权限也给这个人）+ 导师的指标录入 + 安排导师的研究方向
                response.sendRedirect("secretaryDashboard.jsp");
            } else if (userId == 4) {
                // 学科负责人            确定学科研究方向 （查看学院下的学科，有增删改查的能力）
                response.sendRedirect("departmentHeadDashboardServlet");
            } else if (userId == 5) {
                // 研究生管理秘书         录入考生初试信息 录入考生复试信息 收集和审核复试考生信息 发布录取公示结果
                response.sendRedirect("adminSecretaryDashboardServlet");
            } else if (userId == 6) {
                // 研究生主管领导          不知道
                response.sendRedirect("leaderDashboard.jsp");
            } else if (userId == 7) {
                // 监督成员               查看日志log
                response.sendRedirect("supervisorDashboard.jsp");
            }
        }
    }
}
